export const  IS_DEV = !(process.env.NODE_ENV || '').includes('production')

/**
 * 判断浏览器ua
 */
const UA = navigator.userAgent
export const BROWSER = {
  trident: UA.indexOf('Trident') > -1, //IE内核
  presto: UA.indexOf('Presto') > -1, //opera内核
  webKit: UA.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
  gecko: UA.indexOf('Gecko') > -1 && UA.indexOf('KHTML') == -1, //火狐内核
  mobile: !!UA.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
  ios: !!UA.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
  android: UA.indexOf('Android') > -1 || UA.indexOf('Adr') > -1, //android终端
  iPhone: UA.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
  iPad: UA.indexOf('iPad') > -1, //是否iPad
  webApp: UA.indexOf('Safari') == -1, //是否web应该程序，没有头部与底部
  weixin: UA.indexOf('MicroMessenger') > -1, //是否微信 （2015-01-22新增）
  qq: UA.match(/\sQQ/i) == " qq", //是否QQ
  ucaiAPP: UA.indexOf('ucaiApp') > -1, // 优采app
}
export const IS_FROM_APP = BROWSER.ucaiAPP
export const IS_FROM_WX = BROWSER.weixin

/**
 * 是否为 pc 项目（该判断与浏览器无关）
 */
import {
  PC_URL_PREFIX,
} from '@utils/default_config'
export const IS_PC_APP = (() => {
  if (process.env.APP_TYPE === 'pc')
    return true
  if (process.env.APP_TYPE === 'm')
    return false
  if (window.location.pathname.indexOf(PC_URL_PREFIX) === 0)
    return true
  return false
})()

/**
 * 转义时间格式
 * @param {string} time 时间戳
 * @param {string} format 需转化的格式
 */
export function formatTime(time = '', format = 'yyyy-MM-dd') {
  if (!time) return
  if (/^(\d)[-|:](\d)/.test(time)) return time
  
  const is_date = (time instanceof Date) // TODO 判断是否是日期类型
  time = is_date ? time : Number(String(time).padEnd(13, '0')) // 补齐长度
  
  const now = is_date ? time : new Date(time),
        year = now.getFullYear(),
        weekDay = now.getDay()
  // 正则map
  const regMap = {
    'M+': String(now.getMonth() + 1).padStart(2, '0'),
    'd+': String(now.getDate()).padStart(2, '0'),
    'h+': String(now.getHours()).padStart(2, '0'),
    'm+': String(now.getMinutes()).padStart(2, '0'),
    's+': String(now.getSeconds()).padStart(2, '0'),
  }
  // 转化 年
  if (/(y+)/.test(format)) {
    format = format.replace(RegExp.$1, (year + '').substr(4 - RegExp.$1.length));
  }
  // 转化其他
  for (let k in regMap) {
    if (new RegExp(`(${k})`).test(format)) {
      format = format.replace(RegExp.$1, regMap[k]);
    }
  }
  return format;
}

/**
 * 根据 val 是否为空(undefined、null、'')，返回替换值
 * @param {*} val 要判断的值
 * @param {*} nullVal 必须。val 为空时返回该值。
 * @param {*} replaceVal 可选。val 不为空时返回该值，默认为 val。
 */
export const replaceEmpty = (val, nullVal, replaceVal) => {
  return val === undefined || val === null || val === '' ?
    nullVal :
    replaceVal === undefined ? val : replaceVal
}

/**
 * 简单的获取cookie
 */
export function getCookie(name) {
  const strCookie = document.cookie;
  let cookie = null
  strCookie.split('; ').forEach(item => {
    if (name == item.split('=')[0]) {
      cookie = item.split('=')[1]
    }
  })
  return cookie;
}

/**
 * 设置页面标题
 */
import {
  BIZ_NAME
} from '@utils/default_config';
export function setPageTitle(newTitle) {
  newTitle || (newTitle = document.title)
  document.title = newTitle ? newTitle : BIZ_NAME
}